#include <stdio.h>

int main() {

    // scanf 读取 整数 和 字符数时, 遇到空格或换行符结束读取
    char value_char_01;
    int value_number_01;

    scanf("%c", &value_char_01);
    scanf("%d", &value_number_01);

    printf("value_char_01 = %c\n", value_char_01);
    printf("value_number_01 = %d\n", value_number_01);
    printf("\n");

    // scanf 读取字符串时, 遇到空格或换行符结束读取
    char string_01[100] = "";
    char string_02[100] = "";
    char string_03[100] = "";

    scanf("%s %s %s", string_01, string_02, string_03);

    printf("%s\n", string_01);
    printf("%s\n", string_02);
    printf("%s\n", string_03);
    printf("\n");

    // 如果存储字符串的空间不足时, scanf 会继续往后存放数据, 造成内存污染
    char string_04[5];
    scanf("%s", string_04);
    printf("%s\n", string_04);
    printf("\n");


    // gets 库函数, 从键盘中获取字符串, 遇到换行符结束读取, 也存在内存污染的可能
    char string_05[100];
    gets(string_05);
    printf("%s\n", string_05);
    printf("\n");

    // fgets 库函数, 从键盘中获取字符串, 读取的字符串可以设置读取的最大长度, 回车建 \n也会读取
    char string_06[10];
    fgets(string_06, sizeof(string_06), stdin);
    printf("%s", string_06);
    printf("\n");
}